﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using PMQLCHH.DAO;
using PMQLCHH.BUS;

using Exel = Microsoft.Office.Interop;

using System.Data.SqlClient;
using System.Data.OleDb;
using System.IO;
namespace PMQLCHH.GUI
{
    public partial class NhaCungCap : DevComponents.DotNetBar.Office2007Form
    {
        public NhaCungCap()
        {
            InitializeComponent();
        }
        // _bfom : coi xem co click truen hok hok
        // _bformchon: kiem tra san sang duoc truen chua
        bool _bformTruen = false,_bformchon = false;
        // bthem kiểm tra rỗng hok, nếu rỗng thì hok đổi tên nút thêm thành xoá
        private bool _bthem = true;
        // _btk: kiểm tra đã chọn loại tìm kiếm chưa
        private bool _bTk =false;
        private string _strcbx = "------chọn------";
        public NhaCungCap(bool kq)
        {
            InitializeComponent();
            _bformTruen = kq;
        }
        
        // popup dữ liệu

        public delegate void GetString(String MyString1, String MyString2, String MyString3, String MyString4);
        // 3 chuoi trả về ten, dc, dt, mancc
        public GetString MyGetData;
       
        private void txt_TenNhaCungCap_TextChanged(object sender, EventArgs e)
        {
            if (MyGetData != null)
            {
                MyGetData(txt_TenNhaCungCap.Text, txt_DiaChi.Text, txt_SoDienThoai.Text, dtg_DanhSachNhaCungCap.CurrentRow.Cells[0].Value.ToString());
            }
            // khi đang chọn từ datagridview lên, nút thêm sẽ thành xoá, nếu như ta chỉnh sửa gì đó, nút thêm sẽ ẩn đi, hok cho sử dụng
            if (_bthem == false && _text == false)
            {
                _bthem = true;
                btn_them.Text = "Thêm";
                btn_them.Enabled = false;
            }
        }

        private void txt_DiaChi_TextChanged(object sender, EventArgs e)
        {
            if (MyGetData != null)
            {
                MyGetData(txt_TenNhaCungCap.Text, txt_DiaChi.Text, txt_SoDienThoai.Text, dtg_DanhSachNhaCungCap.CurrentRow.Cells[0].Value.ToString());
            }
            // khi đang chọn từ datagridview lên, nút thêm sẽ thành xoá, nếu như ta chỉnh sửa gì đó, nút thêm sẽ ẩn đi, hok cho sử dụng
            if (_bthem == false && _text == false)
            {
                _bthem = true;
                btn_them.Text = "Thêm";
                btn_them.Enabled = false;
            }
        }

        private void txt_SoDienThoai_TextChanged(object sender, EventArgs e)
        {
            if (MyGetData != null)
            {
                MyGetData(txt_TenNhaCungCap.Text, txt_DiaChi.Text, txt_SoDienThoai.Text,dtg_DanhSachNhaCungCap.CurrentRow.Cells[0].Value.ToString());
            }
            // khi đang chọn từ datagridview lên, nút thêm sẽ thành xoá, nếu như ta chỉnh sửa gì đó, nút thêm sẽ ẩn đi, hok cho sử dụng
            if (_bthem == false && _text == false)
            {
                _bthem = true;
                btn_them.Text = "Thêm";
                btn_them.Enabled = false;
            }
        }

        private string _Mancc;

        private void btnExport_Click(object sender, EventArgs e)
        {
             // tạo đường dẫn mặc định ổ đĩa D cho file exel
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.Filter = "Exel files (*.xls)|*.xlsx|All files (*.*)|*.*";
            saveFileDialog1.Title = "Save test File";
            saveFileDialog1.InitialDirectory = @"D:\";
            saveFileDialog1.ShowDialog();
            //đã tồn tại tên file, cho phép lưu
            if (saveFileDialog1.FileName != string.Empty)
            {
             DataTable dtMainSQLData = NhaCungCapDAO.LoadListNhaCungCap();
             DataColumnCollection dcCollection = dtMainSQLData.Columns;
             // Export Data into EXCEL Sheet
             Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
             ExcelApp.Application.Workbooks.Add(Type.Missing);
             // ExcelApp.Cells.CopyFromRecordset(objRS);

             for (int i = 1; i < dtMainSQLData.Rows.Count + 1; i++)
             {
                 for (int j = 1; j < dtMainSQLData.Columns.Count + 1; j++)
                 {
                     if (i == 1)
                         ExcelApp.Cells[i, j] = dcCollection[j - 1].ToString();
                     else
                         ExcelApp.Cells[i, j] = dtMainSQLData.Rows[i - 1][j - 1].ToString();
                 }
             }
             ExcelApp.ActiveWorkbook.SaveCopyAs(saveFileDialog1.FileName);
             ExcelApp.ActiveWorkbook.Saved = true;
             ExcelApp.Quit();
              MessageBox.Show("Dữ Liệu đã được lưu thành công");
            }
        }
        private void LoadDanhSanh_NhaCungCap()
        {
            // nếu có sự truền form tới, cho các nút chức năng ẩn đi, chỉ có nút tìm kiếm có thể thao tác
            if (_bformTruen)
            {
                DataTable dt = NhaCungCapBUS.LoadListNhaCungCap();
                dtg_DanhSachNhaCungCap.DataSource = dt;
                btn_them.Enabled = false;
                btnExport.Enabled = false;
                btn_lammoi.Enabled = false;
                btn_capnhat.Enabled = false;

                txt_DiaChi.Enabled = false;
                txt_GhiChu.Enabled = false;
                txt_SoDienThoai.Enabled = false;
                txt_TenNhaCungCap.Enabled = false;
            }
            else
            {
                DataTable dt = NhaCungCapBUS.LoadListNhaCungCap();
                dtg_DanhSachNhaCungCap.DataSource = dt;
            }
        }
       
        //private void btn_them_Click(object sender, EventArgs e)
        //{
        //    if (bthem == true)
        //    {
        //        // temp kiem tra ten ncc
        //        bool temp = true;
        //        NhaCungCapDTO ncc = new NhaCungCapDTO();
        //        ncc.TenNCC = txt_TenNhaCungCap.Text;
        //        ncc.DIACHI_NCC = txt_DiaChi.Text;
        //        ncc.SODIENTHOAI_NCC = txt_SoDienThoai.Text;
        //        ncc.GHICHU_NCC = txt_GhiChu.Text;
        //        ncc.NgayLap = DateTime.Now.Date;
        //        ncc.TrangThai = 1;
        //        ncc.MaNCC = NhaCungCapBUS.GetMaNhaCungCap();
        //        if (ncc.TenNCC == string.Empty)
        //        {
        //            temp = false;
        //        }
        //        if (temp == true)
        //        {
        //            bool kq = NhaCungCapBUS.InsertNhaCungCap(ncc);
        //            if (kq)
        //            {
        //                MessageBox.Show("Thêm thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
        //                LoadDanhSanh_NhaCungCap();
        //            }
        //            else
        //            {
        //                MessageBox.Show("Thêm thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        //            }
        //        }
        //        else
        //        {
        //            MessageBox.Show("Thêm thất bại, Thiếu thông tin", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        //        }
        //    }
        //    else if (bthem == false)
        //    {
               
        //        int Count = dtg_DanhSachNhaCungCap.SelectedRows.Count;
        //        if (Count == 0)
        //        {
        //            MessageBox.Show("xoá thất bại");
        //            btn_them.Text = "Thêm";
        //        }
        //        else
        //        {
        //            // đếm dc số phần tử chọn, sau đó cho đám này biến mất khỏi gridview, trong cơ sở dữ liệu sẽ được chuyển trạng thái là 0;
        //            for (int i = 0; i < Count; i++)
        //            {
        //                // mỗi lần duyệt sẽ cập nhật lại csdl
        //                string Mancc = dtg_DanhSachNhaCungCap.CurrentRow.Cells[0].Value.ToString();
        //                NhaCungCapBUS.UpdateNhaCungCap(Mancc);
        //                Refesh();
        //            }
        //        }
               
        //        btn_them.Text = "Thêm";
        //        bthem = true;
        //    }
        //}
        
        //private void btn_capnhat_Click(object sender, EventArgs e)
        //{
        //    // đếm số dòng đang được chọn trong dataGridview
        //    int Count = dtg_DanhSachNhaCungCap.SelectedRows.Count;
        //    if (Count == 0)
        //    {
        //        MessageBox.Show("Bạn hãy chọn dòng cần cập nhật lại dữ liệu");
        //    }
        //    else if (Count == 1)
        //    {
        //        // số dòng là 1 thì gán các thuộc tính mới cho 1 ncc, update lại 
        //        NhaCungCapDTO ncc = new NhaCungCapDTO();
        //        ncc.TenNCC = txt_TenNhaCungCap.Text;
        //        ncc.DIACHI_NCC = txt_DiaChi.Text;
        //        ncc.SODIENTHOAI_NCC = txt_SoDienThoai.Text;
        //        ncc.GHICHU_NCC = txt_GhiChu.Text;
        //        ncc.MaNCC = _Mancc;
        //        _Mancc = string.Empty;
        //        // update
        //        bool kq = NhaCungCapBUS.UpdateNhaCungCap(ncc);
        //        if (kq)
        //        {
        //            dtg_DanhSachNhaCungCap.CurrentRow.Cells[3].Value = txt_DiaChi.Text;
        //            dtg_DanhSachNhaCungCap.CurrentRow.Cells[5].Value = txt_GhiChu.Text;
        //            dtg_DanhSachNhaCungCap.CurrentRow.Cells[4].Value = txt_SoDienThoai.Text;
        //            dtg_DanhSachNhaCungCap.CurrentRow.Cells[2].Value = txt_TenNhaCungCap.Text;
        //        } 
        //    }
        //    else
        //    {
        //        MessageBox.Show("Bạn chỉ chọn 1 để cập nhật lại dữ liệu");
        //    }
        //}

        private void Refesh()
        {
            txt_DiaChi.Text = string.Empty;
            txt_GhiChu.Text = string.Empty;
            txt_SoDienThoai.Text = string.Empty;
            txt_TenNhaCungCap.Text = string.Empty;
            txtTimKiem.Text = string.Empty;
            cbxTimKiem.SelectedIndex = 0;
            rbtDiaChi.Checked = false;
            rbtTenNCC.Checked = false;
            cbxTimKiem.Enabled = true;
           
            btn_them.Text = "Thêm";
            btn_timkiem.Text = "Tìm kiếm";
            btn_them.Enabled = true;
            _bthem = true;
            cbxTimKiem.ResetText();
            _bformTruen = false;
            // load xuống datagridview
            LoadDanhSanh_NhaCungCap();
        }
        // dc gọi khi có thông tin truền form
      
        //private void btnImport_Click(object sender, EventArgs e)
        //{
        //    OpenFileDialog openFileDialog = new OpenFileDialog();
        //    openFileDialog.InitialDirectory = Application.ExecutablePath.ToString();
        //    openFileDialog.Filter = "Exel files (*.xls)|*.xlsx|All files (*.*)|*.*";
        //    openFileDialog.FilterIndex = 1;
        //    openFileDialog.InitialDirectory = @"D:\";
        //    openFileDialog.RestoreDirectory = true;
        //    openFileDialog.ShowDialog();
            
        //    //Declare Variables - Edit these based on your particular situation
        //    if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        //    {
        //        string sSQLTable = "NhaCungCap";
        //        // make sure your sheet name is correct, here sheet name is Sheet1, so you can change your sheet name if have different
        //        string myExcelDataQuery = "Select TenNhaCungCap,DiaChi,SoDienThoai, GhiChu, NgayLap from [Sheet1$]";
        //        try
        //        {
        //            // tim version office dang dung
        //            string version = openFileDialog.FileName;
        //            string[] fileExtend = version.Split('.');
        //            string temp = fileExtend[1];
        //            string temp2 = fileExtend[2];
        //            for (int i = 0; i < fileExtend.Length; i++)
        //                temp += fileExtend[i];
        //            string sextent = string.Empty;
        //            // tim dc version de dua vao cau trux van
        //            if (temp == "xls")
        //                sextent = "4.0";
        //            if (temp == "xlsx")
        //                sextent = "12.0";

        //            //Create our connection strings
        //            string sExcelConnectionString = @"Provider=Microsoft.Jet.OLEDB." +sextent+";Data Source=" + openFileDialog.FileName + ";Extended Properties=" + "\"Excel 8.0;HDR=YES;\"";
                 
        //            string sSqlConnectionString = "Data Source=.;Initial Catalog=PMQLCHH;Integrated Security=True";

        //            //Execute a query to erase any previous data from our destination table
        //            //string sClearSQL = "DELETE FROM " + sSQLTable;
        //            //SqlConnection SqlConn = new SqlConnection(sSqlConnectionString);
        //           // SqlCommand SqlCmd = new SqlCommand(sClearSQL, SqlConn);
        //            //SqlConn.Open();
        //           // SqlCmd.ExecuteNonQuery();
        //            //SqlConn.Close();
        //            //Series of commands to bulk copy data from the excel file into our SQL table
        //            OleDbConnection OleDbConn = new OleDbConnection(sExcelConnectionString);
        //            OleDbCommand OleDbCmd = new OleDbCommand(myExcelDataQuery, OleDbConn);
        //            OleDbConn.Open();
        //            OleDbDataReader dr = OleDbCmd.ExecuteReader();
        //            SqlBulkCopy bulkCopy = new SqlBulkCopy(sSqlConnectionString);
        //            bulkCopy.DestinationTableName = sSQLTable;
        //            while (dr.Read())
        //            {
        //                bulkCopy.WriteToServer(dr);
        //            }
        //            OleDbConn.Close();
        //        }
        //        catch (Exception ex)
        //        {
        //            //handle exception
        //        }
        //    }
           
        //}

       

        private void NhaCungCap_Load(object sender, EventArgs e)
        {
            LoadDanhSanh_NhaCungCap();
        }

        private void btn_them_Click_1(object sender, EventArgs e)
        {
            // bthem: true: thêm, false: xoá
            if (_bthem == true)
            {
                // temp kiem tra ten ncc
                bool temp = true;
                NhaCungCapDTO ncc = new NhaCungCapDTO();
                ncc.TenNCC = txt_TenNhaCungCap.Text;
                ncc.DIACHI_NCC = txt_DiaChi.Text;
                ncc.SODIENTHOAI_NCC = txt_SoDienThoai.Text;
                ncc.GHICHU_NCC = txt_GhiChu.Text;
                ncc.NgayLap = DateTime.Now.Date;
                ncc.TrangThai = 1;
                ncc.MaNCC = NhaCungCapBUS.GetMaNhaCungCap();
                if (ncc.TenNCC == string.Empty)
                {
                    temp = false;
                }
                if (temp == true)
                {
                    bool kq = NhaCungCapBUS.InsertNhaCungCap(ncc);
                    if (kq)
                    {
                        MessageBox.Show("Thêm thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        txt_DiaChi.Text = string.Empty;
                        txt_GhiChu.Text = string.Empty;
                        txt_SoDienThoai.Text = string.Empty;
                        txt_TenNhaCungCap.Text = string.Empty;
                        LoadDanhSanh_NhaCungCap();
                    }
                    else
                    {
                        MessageBox.Show("Thêm thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Thêm thất bại, Thiếu thông tin", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else if (_bthem == false)
            {
               
                int Count = dtg_DanhSachNhaCungCap.SelectedRows.Count;
                if (Count == 0)
                {
                    MessageBox.Show("xoá thất bại");
                    btn_them.Text = "Thêm";
                }
                else
                {
                    // đếm dc số phần tử chọn, sau đó cho đám này biến mất khỏi gridview, trong cơ sở dữ liệu sẽ được chuyển trạng thái là 0;
                    for (int i = 0; i < Count; i++)
                    {
                        // mỗi lần duyệt sẽ cập nhật lại csdl
                        string Mancc = dtg_DanhSachNhaCungCap.CurrentRow.Cells[0].Value.ToString();
                        NhaCungCapBUS.UpdateNhaCungCap(Mancc);
                        Refesh();
                    }
                }
               
                btn_them.Text = "Thêm";
                _bthem = true;
            }
        
        }

        private void btn_lammoi_Click_1(object sender, EventArgs e)
        {
            Refesh();
        }

        private void btnExport_Click_1(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.Filter = "Exel files (*.xls)|*.xlsx|All files (*.*)|*.*";
            saveFileDialog1.Title = "Save test File";
            saveFileDialog1.InitialDirectory = @"D:\";
            saveFileDialog1.ShowDialog();

            if (saveFileDialog1.FileName != string.Empty)
            {
                DataTable dtMainSQLData = NhaCungCapDAO.LoadListNhaCungCap();
                DataColumnCollection dcCollection = dtMainSQLData.Columns;
                // Export Data into EXCEL Sheet
                Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
                ExcelApp.Application.Workbooks.Add(Type.Missing);
                // ExcelApp.Cells.CopyFromRecordset(objRS);

                for (int i = 1; i <= dtMainSQLData.Rows.Count + 1; i++)
                {
                    for (int j = 1; j < dtMainSQLData.Columns.Count + 1; j++)
                    {
                        // dong đầu tiên là tiêu đề 
                        if (i == 1)
                            ExcelApp.Cells[i, j] = dcCollection[j - 1].ToString();
                        // các dòng khác là giá trị
                        else
                            ExcelApp.Cells[i, j] = dtMainSQLData.Rows[i - 2][j - 1].ToString();
                    }
                }
                ExcelApp.ActiveWorkbook.SaveCopyAs(saveFileDialog1.FileName);
                ExcelApp.ActiveWorkbook.Saved = true;
                ExcelApp.Quit();
                MessageBox.Show("Dữ Liệu đã được lưu thành công");
            }
        }


        private void btn_capnhat_Click_1(object sender, EventArgs e)
        {
            // đếm số dòng đang được chọn trong dataGridview
            int Count = dtg_DanhSachNhaCungCap.SelectedRows.Count;
            if (Count == 0)
            {
                MessageBox.Show("Bạn hãy chọn dòng cần cập nhật lại dữ liệu");
            }
            else if (Count == 1)
            {
                // số dòng là 1 thì gán các thuộc tính mới cho 1 ncc, update lại 
                NhaCungCapDTO ncc = new NhaCungCapDTO();
                ncc.TenNCC = txt_TenNhaCungCap.Text;
                ncc.DIACHI_NCC = txt_DiaChi.Text;
                ncc.SODIENTHOAI_NCC = txt_SoDienThoai.Text;
                ncc.GHICHU_NCC = txt_GhiChu.Text;
                ncc.MaNCC = _Mancc;
                _Mancc = string.Empty;
                // update
                bool kq = NhaCungCapBUS.UpdateNhaCungCap(ncc);
                if (kq)
                {
                    //dtg_DanhSachNhaCungCap.CurrentRow.Cells[2].Value = txt_DiaChi.Text;
                    //dtg_DanhSachNhaCungCap.CurrentRow.Cells[4].Value = txt_GhiChu.Text;
                    //dtg_DanhSachNhaCungCap.CurrentRow.Cells[3].Value = txt_SoDienThoai.Text;
                    //dtg_DanhSachNhaCungCap.CurrentRow.Cells[1].Value = txt_TenNhaCungCap.Text;
                    Refesh();
                }
            }
            else
            {
                MessageBox.Show("Bạn chỉ chọn 1 để cập nhật lại dữ liệu");
            }
        }
        private void TimKiem()
        {
            _bTk = true;
        }
        
        private void btn_timkiem_Click_1(object sender, EventArgs e)
        {
            // có sự chuền và đã được chọn đóng form trả kết quả về form chọn tới
            if (_bformTruen && _bformchon)
            {
                _bformTruen = false;
                this.Close();
            }
            else
            {
               // tìm kiếm 
                string loaiTim = string.Empty;
                // kiểm tra cbx
                if (cbxTimKiem.Enabled && cbxTimKiem.Text.ToString().Equals(_strcbx)== false || cbxTimKiem.Text == string.Empty)
                {
                    loaiTim = cbxTimKiem.SelectedItem.ToString();
                    
                }
                if (rbtTenNCC.Checked)
                {
                    loaiTim = rbtTenNCC.Text;
                
                }
                if (rbtDiaChi.Checked)
                {
                    loaiTim = rbtDiaChi.Text;
                    
                }
                string tenTim = txtTimKiem.Text;
                // nếu chưa biết loại tìm kiếm hoặc tên tìm

                if (loaiTim == string.Empty || tenTim == string.Empty)
                {
                    MessageBox.Show("Bạn chưa chọn loại tìm kiếm hoặc chưa có thông tin tìm kiếm ");
                }
               
                else
                {            
                    DataTable dt = NhaCungCapBUS.SearchNhaCungCap(loaiTim, tenTim);
                    dtg_DanhSachNhaCungCap.DataSource = dt;
                }
            }
        }

        private void rbtTenNCC_Click_1(object sender, EventArgs e)
        {
            cbxTimKiem.Enabled = false;
        }

        private void rbtTenNCC_CheckedChanged_1(object sender, EventArgs e)
        {
            cbxTimKiem.Enabled = false;
        }

        private void rbtDiaChi_Click_1(object sender, EventArgs e)
        {
            cbxTimKiem.Enabled = false;
        }

        private void rbtDiaChi_CheckedChanged_1(object sender, EventArgs e)
        {
            cbxTimKiem.Enabled = false;
        }
        bool _text = false;
        private void dtg_DanhSachNhaCungCap_CellClick_1(object sender, DataGridViewCellEventArgs e)
        {
            _text = true;
            txt_DiaChi.Text = dtg_DanhSachNhaCungCap.CurrentRow.Cells[2].Value.ToString();
            txt_GhiChu.Text = dtg_DanhSachNhaCungCap.CurrentRow.Cells[4].Value.ToString();
            txt_SoDienThoai.Text = dtg_DanhSachNhaCungCap.CurrentRow.Cells[3].Value.ToString();
            txt_TenNhaCungCap.Text = dtg_DanhSachNhaCungCap.CurrentRow.Cells[1].Value.ToString();
            _Mancc = dtg_DanhSachNhaCungCap.CurrentRow.Cells[0].Value.ToString();
            if (txt_DiaChi.Text != string.Empty && _bformTruen ==false)
            {
                btn_them.Text = "Xóa";
                _bthem = false;
            }
            if (txt_DiaChi.Text != string.Empty && _bformTruen == true)
            {
                btn_timkiem.Text = "OK";
                _bformchon = true;
            }
        }

        private void txt_SoDienThoai_KeyPress_1(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtTimKiem_TextChanged(object sender, EventArgs e)
        {
            if (_bformTruen)
            {
                btn_timkiem.Text = "Tìm kiếm";
                _bformchon = false;
            }
        }
   
        

      
    }
}